<%@ page import="java.util.HashMap" %>
<%@ page import="java.util.Map" %>
<%@ page import="java.util.ArrayList" %>
<%@ page import="entity.Monster" %>
<%@ page import="java.util.List" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%--
  Created by IntelliJ IDEA.
  User: LMY
  Date: 2025/6/22
  Time: 00:42
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
      <title>c:foreach标签的使用</title>
  </head>
  <body>
  <h1> 第一种遍历方式：遍历i~j</h1>
  <ul>
    <%--
    <c:forEach begin="1" end="5" var="i">
        1.遍历1~5
        2.输出 begin属性设置开始的索引 end属性设置结束的索引
        3.var属性表示循环的变量(当前正在遍历到的数据)
        4.等价于 for(int i = 1; i < 5; i++){}
        5.默认情况下，i会递增1
    --%>
    <c:forEach begin="1" end="5" var="i">
      <li>排名=${i}</li>
    </c:forEach>
  </ul>
<hr/>
  <h1> 第二种遍历方式：遍历数组</h1>
  <%
    request.setAttribute("sports", new String[]{"打篮球", "乒乓球", "踢足球"});
  %>
    <%--
        1.items 遍历的集合
        2.var 遍历到的数据
        3.等价于 for(Object item: arr){}
    --%>
    <c:forEach items="${requestScope.sports}" var="item">
      运动名称= ${item}<br/>
    </c:forEach>
<hr/>
  <h1>第3种遍历方式：遍历Map</h1>
  <%
    Map<String, Object> map = new HashMap<>();
    map.put("key1", "北京");
    map.put("key2", "上海");
    map.put("key3", "天津");
    request.setAttribute("cities", map);
  %>
    <%--
      1. items 遍历的map集合
      2. var 遍历到的数据
      3. entry.key 取出key
      4. entry.value 取出值
    --%>
  <c:forEach items="${requestScope.cities}" var="city">
    城市信息: ${city.key}--${city.value}<br/>
  </c:forEach>
<hr/>
  <h1>第4种遍历方式：遍历List</h1>
  <%
    List<Monster> monsters = new ArrayList<>();
    monsters.add(new Monster(100, "小妖怪", "巡山的"));
    monsters.add(new Monster(200, "大妖怪", "做饭的"));
    monsters.add(new Monster(300, "老妖怪", "打扫位置的"));
    request.setAttribute("monsters", monsters);
  %>
  <%--
      items 表示遍历的集合
      var 表示遍历到的数据
      begin 表示遍历的开始索引值 ,从0开始计算
      end 表示结束的索引值
      step 属性表示遍历的步长值
      varStatus 属性表示当前遍历到的数据的状态,可以得到step,begin,end等属性值
  --%>
  <c:forEach items="${requestScope.monsters}" var="monster">
    妖怪的信息: ${monster.id}-${monster.name}-${monster.skill}<br/>
  </c:forEach>
  </body>
</html>
